<!DOCTYPE html>
<html lang="zh-CN">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>开关效果</title>
  <style>
    div {
      width: 40px;
      height: 20px;
      display: flex;
      /* 背景颜色 */
      background-color: #ddd;
      /* 边框和背景色一样 */
      border: 2px solid #ddd;
      /* 外边框圆角半径 */
      border-radius: 10px;
      /* 总宽度和总高度：包含边框 和 内边距 */
      box-sizing: border-box;
      /* 鼠标指针变成小手 */
      cursor: pointer;
      /* 添加过渡效果 */
      transition: all 0.4s;
    }

    span {
      width: 16px;
      height: 16px;
      border-radius: 8px;
      background-color: #fff;
      /* 小球 添加过渡效果 */
      transition: all 0.4s;
    }

    /* 设计一个类名，用来修改盒子颜色和边框颜色 */
    .on {
      background-color: #3F9EFF;
      border: 2px solid #3F9EFF;
    }

    /* 👍有 on 的情况下，嵌套控制里面的 span 移动 */
    .on span {
      margin-left: 20px;
    }
  </style>
</head>

<body>
  <div class="">
    <span></span>
  </div>

  <script>
    // 思路分析：
    //   1. 查找按钮
    //   2. 按钮添加点击事件
    //   3. 实现切换效果
    /* 
      新知识点： classList    操作类名
                  remove     删除
                  add        添加
                  toggle     👍切换
    */
    // 1. 查找按钮
    let div = document.querySelector('div')
    // 2. 按钮添加点击事件
    div.addEventListener('click', function () {
      // 3. 👍切换 div 上的类名
      div.classList.toggle('on')
    })
  </script>
</body>

</html>